import _axios from "@/plugins/axios";

// 用户统计数据
export function statistics() {
  return _axios({
    url: '/user/statistics',
    method: 'get'
  })
}
// 存放仓库超过两天的用户
export function shipmentShipmentReminder() {
  return _axios({
    url: '/user/shipmentShipmentReminder',
    method: 'get'
  })
}


// 绑定邮箱
export function bindEmail({ email, vcode }) {
  return _axios({
    url: '/user/email/bind',
    method: 'post',
    data: {
      email, // 绑定邮箱参数
      vcode // 验证码
    }
  })
}


// 变更绑定邮箱
export function changeEmail({
  newEmail, //新邮箱
  newVCode, //新邮箱验证码
  oldEmail, // 旧邮箱
  oldInternationalAreaCode, // 旧手机号码国际区号标识
  oldMobile, // 旧手机号码
  oldVCode // 旧设备验证码(邮箱或手机)
}) {
  return _axios({
    url: '/user/email/change',
    method: 'post',
    data: {
      newEmail, //新邮箱
      newVCode, //新邮箱验证码
      oldEmail, // 旧邮箱
      oldInternationalAreaCode, // 旧手机号码国际区号标识
      oldMobile, // 旧手机号码
      oldVCode // 旧设备验证码(邮箱或手机)
    }
  })
}

// 检查邮箱是否可用
export function checkEmail(email) {
  return _axios({
    url: '/user/email/check',
    method: 'post',
    data: {
      email, // 邮箱
    }
  })
}

// 检查用户名是否可用
export function checkUsername(username) {
  return _axios({
    url: '/user/name/check',
    method: 'post',
    data: {
      username, // 检查用户名是否可用
    }
  })
}

// 修改个人信息
export function editorMyInfo({
  nikeName,
  avatar,
  countryCode,
  currencyCode,
  lang,
  sex,
  birthday,
  mobile
}) {
  return _axios({
    url: '/user/info/edit',
    method: 'post',
    data: {
      nikeName,
      avatar, // 头像
      countryCode, // 国家编码
      currencyCode, // 币种编码
      lang, // 语言
      sex,
      birthday,
      mobile
    }
  })
}

// 用户任务列表
export function getTaskList() {
  return _axios({
    url: '/user/info/task/list',
    method: 'post'
  })
}

// 个人中心-新用户任务列表
export function getTaskNewList() {
  return _axios({
    url: '/user/info/task/newList',
    method: 'post'
  })
}

// 个人中心-发送手机验证码
export function getMobile({
  internationalAreaCode,
  mobile,
  type
}) {
  return _axios({
    url: '/user/mobile/captcha',
    method: 'post',
    data: {
      internationalAreaCode,
      mobile,
      type
    }
  })
}

// 个人中心-验证手机绑定是否可用
export function getMobileCheck({
  internationalAreaCode,
  mobile,
}) {
  return _axios({
    url: '/user/mobile/check',
    method: 'post',
    data: {
      internationalAreaCode,
      mobile
    }
  })
}

// 绑定手机号码
export function getBindPhone({
  code,
  internationalAreaCode,
  mobile,
  type
}) {
  return _axios({
    url: '/user/mobile/verify',
    method: 'get',
    params: {
      code,
      internationalAreaCode,
      mobile,
      type
    }
  })
}

// 新手任务-领取奖励
export function getReceive({
  taskId
}) {
  return _axios({
    url: '/user/info/task/receive',
    method: 'get',
    params: {
      taskId
    }
  })
}

// discord绑定成功回调
export function getBindDiscordUrl({
  code,
  source,
  countryCode,
  currencyCode,
  lang,
  inviteCode,
  activityCode,
  utmParam,
  state,
  callback
}) {
  return _axios({
    url: `/sys/thirdLogin/bind/${source}`,
    method: 'post',
    data: {
      code,
      countryCode,
      currencyCode,
      lang,
      inviteCode,
      activityCode,
      utmParam,
      state,
      callback
    }
  })
}

// 谷歌登录获取跳转地址
// 获取用户信息
export function getRoute({
  source,
  countryCode,
  currencyCode,
  lang,
  inviteCode,
  activityCode,
  callback
}) {
  return _axios({
    url: `/sys/thirdLogin/render/${source}`,
    method: 'get',
    params: {
      countryCode,
      currencyCode,
      lang,
      inviteCode,
      activityCode,
      callback
    }
  })
}

// 谷歌登录获取跳转地址
// 获取用户信息
export function loginWithGoogleJWTToken({
  token,
  source,
  countryCode,
  currencyCode,
  lang,
  inviteCode
}) {
  return _axios({
    url: `/sys/thirdLogin/google/login`,
    method: 'post',
    data: {
      token,
      countryCode,
      currencyCode,
      lang,
      inviteCode
    }
  })
}

// 谷歌登录获取跳转地址
// 获取用户信息
export function loginWithGoogleOauth2({
  code,
  source,
  countryCode,
  currencyCode,
  lang,
  inviteCode,
  activityCode,
  utmParam,
  state
}) {
  return _axios({
    url: `/sys/thirdLogin/${source}/oauth2`,
    method: 'post',
    data: {
      code,
      countryCode,
      currencyCode,
      lang,
      inviteCode,
      activityCode,
      utmParam,
      state
    }
  })
}

// 谷歌授权后获取token
export function getCallback(source, content) {
  return _axios({
    url: `/sys/thirdLogin/${source}/callback` + content,
    method: 'get'
  })
}


// 获取用户信息
export function userInfo() {
  return _axios({
    url: '/user/info',
    method: 'get'
  })
}

// 获取用户抽奖次数
export function getUserDrawCount({ activityId }) {
  return _axios({
    url: '/operationActivity/getUserDrawCount',
    method: 'get',
    params: {
      activityId
    }
  })
}

// 查询进行中的活动
export function listProcessingActivity() {
  return _axios({
    url: '/operationActivity/listProcessingActivity',
    method: 'get'
  })
}

// 用户抽奖
export function userDraw({ activityId }) {
  return _axios({
    url: '/operationActivity/userDraw',
    method: 'post',
    data: {
      activityId //活动id
    }
  })
}

// 登录接口
export function login({
  captcha,
  checkKey,
  password,
  username
}) {
  return _axios({
    url: '/user/login',
    method: 'post',
    data: {
      captcha, // 验证码
      checkKey, // 	验证码key
      password, // 密码
      username // 账号
    }
  })
}

// 临时 Token 登录
export function loginByToken({
  captcha,
  checkKey,
  password,
  username,
  provisionalToken
}) {
  return _axios({
    url: '/user/login/byToken',
    method: 'post',
    data: {
      captcha, // 验证码
      checkKey, // 	验证码key
      password, // 密码
      username, // 账号
      provisionalToken
    }
  })
}

// 退出登录
export function logout() {
  return _axios({
    url: '/user/logout',
    method: 'get'
  })
}



// 获取图形验证码
export function randomImage(key) {
  return _axios({
    url: `/user/captcha/image/${key}`,
    method: 'get'
  })
}

// 余额充值
export function recharge(rechargeAmount) {
  return _axios({
    url: '/balance/recharge',
    method: 'post',
    data: {
      rechargeAmount
    }
  })
}

// 注册
export function register({
  countryCode,
  currencyCode,
  email,
  emailCode,
  internationalAreaCode,
  lang,
  mobile,
  mobileCode,
  password,
  username,
  inviteCode,
  activityCode,
  utmParam
}) {
  return _axios({
    url: '/user/register',
    method: 'post',
    data: {
      countryCode, // 国家编码
      currencyCode, // 币种编码
      email, // 邮箱
      emailCode, // 验证码
      internationalAreaCode, // 手机号码国际区号标识
      lang, // 语言编码
      mobile, // 手机号码
      mobileCode, // 验证码
      password, // 登录密码
      username, // 用户名
      inviteCode, // 邀请码
      activityCode,//活动id
      utmParam
    }
  })
}


// 重置登录密码
export function resetPassword({
  email,
  internationalAreaCode,
  mobile,
  newPassword,
  vcode
}) {
  return _axios({
    url: '/user/login/password/reset',
    method: 'post',
    data: {
      email, // 绑定邮箱
      internationalAreaCode, // 绑定手机号码国际区号标识
      mobile, // 绑定手机号码
      newPassword, // 新的登录密码
      vcode // 验证码
    }
  })
}

// 发送邮箱验证码
export function sendCodeByEmail({
  email,
  type
}) {
  return _axios({
    url: '/user/email/captcha',
    method: 'post',
    data: {
      email, // 邮箱
      type // 类型：0-注册，1-修改密码，2-重置密码，3-绑定邮箱，4-绑定手机，5-变更邮箱，6-变更手机
    }
  })
}


// 修改登录密码
export function updateLoginPassword({
  newPassword,
  oldPassword
}) {
  return _axios({
    url: '/user/login/password/update',
    method: 'post',
    data: {
      newPassword,
      oldPassword
    }
  })
}



// 帐变记录-分页列表查询
export function changeRecord({ changeType, orderNum, pageNo, pageSize }) {
  return _axios({
    url: '/payment/bill',
    method: 'get',
    params: {
      changeType,//调账类型 BALANCE 余额 GOLD_COIN 金币
      orderNum,
      pageNo,
      pageSize
    }
  })
}


// 余额支付
export function payByBalance(orderNo, password, couponCustomerId, clientType = 'web') {
  return _axios({
    url: '/balance/pay',
    method: 'post',
    data: {
      orderNo, // 支付订单号
      password: password || '', // 支付密码
      couponCustomerId,
      clientType
    }
  })
}

// 币种转换
export function convert({ amount, currencyCode }) {
  return _axios({
    url: '/channel/convert',
    method: 'post',
    data: {
      amount, //人名币
      currencyCode //币种
    }
  })
}


// 获取未读信息条数
export function getUnReadCount() {
  return _axios({
    url: '/inboxMessages/getUnReadCount',
    method: 'get'
  })
}
// 用户站内信列表
export function getMessageList({
  messageType,
  pageNum,
  pageSize
}) {
  return _axios({
    url: '/inboxMessages/list',
    method: 'get',
    params: {
      messageType,
      pageNum,
      pageSize
    }
  })
}
// 待处理弹窗
export function getWaitList() {
  return _axios({
    url: '/inboxMessages/popUp',
    method: 'get'
  })
}

/**
 * 打点
 * @param actionid string 用户行为id - 仅在行为日志增加的参数
 * @param actionname string 用户行为名称 - 仅在行为日志增加的参数
 * @param client string 客户端类型，枚举值：PC Web、H5、App
 * @param logModule string 日志模块名，用于区分不同的行为日志，如 register（注册）、logout（登出）、login（登录）、actions（行为日志）、order_item（子订单日志）
 */
export function userPoint(data) {
  return _axios({
    url: "/activities/tUserActivitiesLog/save",
    method: "post",
    data: {
      client: 'PC Web',
      ...data
    }
  });
}


// 我的资产-优惠券统计信息
export function myCouponStat(params) {
  return _axios({
    url: '/coupon/myCouponStat',
    method: 'get',
    params: params
  })
}
/**
 * 打点 - 商品详情
 * @param client string 客户端类型，枚举值：PC Web、H5、App
 * @param channel number 来源渠道 1-首页橱窗 2-详情页橱窗 3-商城 4-自搜索 5-达人货盘
 * @param detailUrl string 商品详情页链接
 * @param position string 位置号
 * @param price string、number 商品单价
 * @param productChannel string 商品来源渠道 1688、WEIDIAN、TAOBAO、WANBANGT...
 * @param productType string 商品品类名称 普货...
 * @param spuNo string spu
 */
export function detailPoint(data) {
  return _axios({
    url: "/activities/tUserActivitiesLog/saveProductDetail",
    method: "post",
    data: {
      client: 'PC Web',
      ...data
    }
  });
}